package it.paspiz85.nanobot.test.steps;
import it.paspiz85.nanobot.exception.BotBadBaseException;
import it.paspiz85.nanobot.game.MainScreen;
import it.paspiz85.nanobot.game.Screen;
import it.paspiz85.nanobot.util.Point;
import java.awt.image.BufferedImage;
import java.util.TreeSet;
import java.util.function.Supplier;
import cucumber.api.java.en.When;
public class MainScreenSteps {
private TreeSet<Point> searchPointset(final Supplier<Point> pointSupplier, final int markRGB) {
final TreeSet<Point> pointset = new TreeSet<>();
while (true) {
final Point point = pointSupplier.get();
if (point == null) {
break;
}
pointset.add(point);
final BufferedImage screenshot = ScenarioContext.get("screenshot", BufferedImage.class);
final int x = point.x();
final int y = point.y();
screenshot.setRGB(x, y, markRGB);
screenshot.setRGB(x - 1, y - 1, markRGB);
screenshot.setRGB(x - 2, y - 2, markRGB);
screenshot.setRGB(x - 1, y + 1, markRGB);
screenshot.setRGB(x - 2, y + 2, markRGB);
screenshot.setRGB(x + 1, y - 1, markRGB);
screenshot.setRGB(x + 2, y - 2, markRGB);
screenshot.setRGB(x + 1, y + 1, markRGB);
screenshot.setRGB(x + 2, y + 2, markRGB);
}
return pointset;
}
@When("^searching attack button point$")
public void whenSearchingAttackButtonPoint() throws BotBadBaseException {
GenericSteps.initScreenshotMock();
// TODO
// final Point point =
// Screen.getInstance(MainScreen.class).searchButtonAttack();
// ScenarioContext.put("point", point);
}
@When("^searching full dark elixir drill points$")
public void whenSearchingFullDarkElixirDrillPoints() throws BotBadBaseException {
GenericSteps.initScreenshotMock();
final TreeSet<Point> pointset = searchPointset(() -> Screen.getInstance(MainScreen.class)
.searchFullDarkElixirDrill(), 0xFFFFFF);
ScenarioContext.put("pointset", pointset);
}
@When("^searching full elixir collector points$")
public void whenSearchingFullElixirCollectorPoints() throws BotBadBaseException {
GenericSteps.initScreenshotMock();
final TreeSet<Point> pointset = searchPointset(() -> Screen.getInstance(MainScreen.class)
.searchFullElixirCollector(), 0xFFFF00);
ScenarioContext.put("pointset", pointset);
}
@When("^searching full gold mine points$")
public void whenSearchingFullGoldMinePoints() throws BotBadBaseException {
GenericSteps.initScreenshotMock();
final TreeSet<Point> pointset = searchPointset(() -> Screen.getInstance(MainScreen.class).searchFullGoldMine(),
0xFF);
ScenarioContext.put("pointset", pointset);
}
@When("^searching troops button point$")
public void whenSearchingTroopsButtonPoint() throws BotBadBaseException {
GenericSteps.initScreenshotMock();
// TODO
// final Point point =
// Screen.getInstance(MainScreen.class).searchButtonTroops();
// ScenarioContext.put("point", point);
}
}